"""
编写函数，实现将十进制数转换为二进制数。
"""
def dec2bin(num):
    l = []
    if num < 0:
        return '-' + dec2bin(abs(num))  # 如果是负数，先处理其绝对值，然后加上负号
    while True:
        num, remainder = divmod(num, 2)  # 除以2，得到商和余数
        l.append(str(remainder))
        if num == 0:
            return ''.join(l[::-1])
"""
第1次循环：10 ÷ 2 = 5 余 0 → l = ['0']
第2次循环：5 ÷ 2 = 2 余 1 → l = ['0', '1']  
第3次循环：2 ÷ 2 = 1 余 0 → l = ['0', '1', '0']
第4次循环：1 ÷ 2 = 0 余 1 → l = ['0', '1', '0', '1']

反转列表：['1', '0', '1', '0'] → 连接成字符串："1010"
"""


"""
用二分法查找升序排序的100个随机整数(1~100)数列中某个数并输出其位置。

提示：二分法是一种快速查找的方法，时间复杂度低，逻辑简单易懂，就是不断地找出中间值，用中间值对比查找的值；若中间值大，则继续在左侧查找；若中间值小，则继续在右侧查找。
"""
import random


def random_100(amout):
    li = []
    for i in range(amout):
        s = random.randint(0, amout)
        li.append(s)
    return li


lst = sorted(random_100(100))
print(lst)


# 定义函数
def func(n, lst, left=0, right=None):
    if right == None:
        right = len(lst) - 1
    if left < right:
        mid = (left + right) // 2
        if n < lst[mid]:
            right = mid - 1
        elif n > lst[mid]:
            left = mid + 1
        else:
            print('你输入的数在这个列表中,它的位置{}\n'.format(mid))
            return True
            return func(n, lst, left, right)
    else:
        print('你输入的数不在这个列表中\n')
        return False
while True:
    n = int(input('请输入你要查找的数:'))
    func(n, lst)


#（3)根据输入的边数和边长，利用turtle库绘制正多边形。
import turtle
# 输入边数和边长
n = int(input("请输入正多边形的边数: "))
length = int(input("请输入正多边形的边长: "))
# 创建一个 turtle 对象
t = turtle.Turtle()
# 绘制正多边形
for _ in range(n):
    t.forward(length)  # 向前移动指定的边长
    t.right(360 / n)   # 向右转，角度为外角的度数
# 保持绘图窗口
turtle.done()

#（4）输入a（0<a≤9）和n的值，计算s=a+aa+aaa+·+aa··a的值。
a = int(input("请输入 a 的值（0 < a ≤ 9）: "))
n = int(input("请输入 n 的值: "))
s = 0
current = 0
for _ in range(n):
    current = current * 10 + a  # 构建每一项，比如第一次是 a，第二次是 aa，以此类推
    s += current  # 累加每一项到 s 中
print(f"s 的值为: {s}")
